package com.wicket.okrbff.biz.service.dto.common;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import javax.validation.constraints.NotNull;
import lombok.Data;
import com.wicket.okrbff.common.annotations.TreeType;
import java.util.Objects;
    
    
    /**
     * @desc BffNextLevelTargetObjDto
     * @使用场景
     */
    @Data
    public class BffNextLevelTargetObjDto  implements Serializable {
      
    /**
     * 指标ID 
     */
    @ApiModelProperty("指标ID")
    private String	 objectiveId;

    /**
     * 归属父级指标ID 
     */
    @TreeType("fid")
@ApiModelProperty("归属父级指标ID")
    private String	 parentObjectiveId;

    /**
     * 指标标识 
     */
    @ApiModelProperty("指标标识")
    private String	 objectiveCode;

    /**
     * 是否末级指标 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否末级指标")
    private String	 isLastObjective;

    /**
     * 层级 
     */
    @ApiModelProperty("层级")
    private Long	 levelNumber;

    /**
     * 虚拟组织下部门ID 
     */
    @ApiModelProperty("牵头部门ID")
    private String	 deptId;

    /**
     * 部门简称 
     */
    @ApiModelProperty("牵头部门简称")
    private String	 deptShortName;

    /**
     * 个人账号 
     */
    @ApiModelProperty("牵头人个人账号ID")
    private String	 userId;

    /**
     * 真实姓名 
     */
    @ApiModelProperty("责任人真实姓名")
    private String	 idCardName;

    /**
     * 用户昵称 
     */
    @ApiModelProperty("责任人昵称")
    private String	 nickName;

    /**
     * 指标名称 
     */
    @ApiModelProperty("指标名称")
    private String	 objectiveName;

    /**
     * 指标简称 
     */
    @ApiModelProperty("指标简称")
    private String	 objectiveShortName;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String	 subjectLifeCycle;
/**
     * 冗余目标ID 
     */
    @ApiModelProperty("冗余目标ID")
    private String	 targetId;

    /**
     * 责任主体ID 
     */
    @ApiModelProperty("责任主体ID ")
    private String	 dutyBodyId;

    /**
     * 责任主体名称 
     */
    @ApiModelProperty("责任主体名称 ")
    private String	 dutyBodyName;
/**
     * 责任主体类型 PERSONAL:个人 DEPT:部门
     */
    @ApiModelProperty("责任主体类型")
    private String	 respBodyType;
/**
     * 关联末级目标分类ID 
     */
    @ApiModelProperty("关联末级目标分类ID")
    private String	 correlationLastTargetCatId;

    /**
     * 冗余指标模板ID 
     */
    @ApiModelProperty("冗余指标模板ID")
    private String	 objectiveTemplateId;

    /**
     * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
     */
    @ApiModelProperty("冗余指标业务类型")
    private String	 targetValueType;

    /**
     * 指标模板名称 
     */
    @ApiModelProperty("指标模板名称")
    private String	 objectiveTemplateName;

    /**
     * 排序 
     */
    @ApiModelProperty("排序")
    private Long	 orderNumber;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @ApiModelProperty("批次下更新状态")
    private String	 updateStatus;

    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @ApiModelProperty("周期模式类型编码")
    private String	 periodicModeTypeCode;

    /**
     * 被评对象目标周期ID 
     */
    @ApiModelProperty("被评对象目标周期ID")
    private String	 evaObjTargetCycleId;

    /**
     * 周期名称 
     */
    @ApiModelProperty("周期名称")
    private String	 cycleStandardName;

    /**
     * 周期类型实例简称 
     */
    @ApiModelProperty("周期类型实例简称")
    private String	 cycleNumberShortName;

    /**
     * 权重 
     */
    @ApiModelProperty("权重")
    private Double	 weightValue;

    /**
     * 权重分值 
     */
    @ApiModelProperty("权重分值")
    private Double	 weightScore;

    /**
     * 诊断值 
     */
    @ApiModelProperty("诊断值")
    private Double	 targetDiagnosticValue;

    /**
     * 冗余单位 INDIVIDUAL:个 DOOR:门 TERM:项 PIECE:篇 YUAN:元 FEN:分 WAN_YUAN:万元 PERCENT:百分率 SET:套 TIMES:次 PART:部 NNT:人
     */
    @ApiModelProperty("冗余单位")
    private String	 unit;

    /**
     * 冗余数字单位 
     */
    @ApiModelProperty("冗余数字单位")
    private Double	 digitalUnit;

    /**
     * 组织内部门身份名称 
     */
    @ApiModelProperty("组织内部门身份名称")
    private String	 virtualOrgDeptStatus;

    /**
     * 责任人就职记录ID 
     */
    @ApiModelProperty("责任人就职记录ID")
    private String	 dutyInaugurationId;

    /**
     * 责任人姓名 
     */
    @ApiModelProperty("责任人姓名")
    private String	 dutyInaugurationName;

    /**
     * 责任人昵称 
     */
    @ApiModelProperty("责任人昵称")
    private String	 dutyInaugurationNickName;

    /**
     * 责任人组内职务名称 
     */
    @ApiModelProperty("责任人组内职务名称")
    private String	 dutyPostName;

    /**
     * 主管就职记录ID 
     */
    @ApiModelProperty("主管就职记录ID")
    private String	 directorInaugurationId;

    /**
     * 主管姓名 
     */
    @ApiModelProperty("主管姓名")
    private String	 directorName;

    /**
     * 主管昵称 
     */
    @ApiModelProperty("主管昵称")
    private String	 directorNickName;

    /**
     * 主管组内职务名称 
     */
    @ApiModelProperty("主管组内职务名称")
    private String	 directorPostName;
/**
     * 本级是否向下分工 TRUE:是 FALSE:否
     */
    @ApiModelProperty("本级是否向下分工")
    private String	 createLowerIndicator;
/**
     * 责任人虚拟组织成员ID 
     */
    @ApiModelProperty("责任人虚拟组织成员ID")
    private String	 dutyVirtualOrgMemberId;

    /**
     * 主管虚拟组织成员ID 
     */
    @ApiModelProperty("主管虚拟组织成员ID")
    private String	 directorVirtualOrgMemberId;
/**
     * 是否已完成 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已完成")
    private String	 isComplete;
/**
     * 目标值 
     */
    @ApiModelProperty("目标值")
    private Double	 targetValue;
/**
     * 目标周期简称 
     */
    @ApiModelProperty("目标周期简称")
    private String	 cyclelAlias;
/**
     * 责任人虚拟组织成员ID 
     */
    @ApiModelProperty("责任人虚拟组织成员ID")
    private String	 principalVirtualOrgMemberId;

    /**
     * 责任人就职记录ID 
     */
    @ApiModelProperty("责任人就职记录ID")
    private String	 principalInaugurationId;

    /**
     * 责任人头像 
     */
    @ApiModelProperty("责任人头像")
    private String	 principalUserFace;

    /**
     * 责任人姓名 
     */
    @ApiModelProperty("责任人姓名")
    private String	 principalInaugurationName;

    /**
     * 责任人昵称 
     */
    @ApiModelProperty("责任人昵称")
    private String	 principalInaugurationNickName;

    /**
     * 责任人组内职务名称 
     */
    @ApiModelProperty("责任人组内职务名称")
    private String	 principalPostName;
/**
     * 责任人姓名 
     */
    @ApiModelProperty("责任人姓名")
    private String	 principalIdCardName;

    /**
     * 责任人昵称 
     */
    @ApiModelProperty("责任人昵称")
    private String	 principalNickName;

    /**
     * 责任人组内职务名称 
     */
    @ApiModelProperty("责任人组内职务名称")
    private String	 principalVirtualOrganizationPosition;

    /**
     * 主管姓名 
     */
    @ApiModelProperty("主管姓名")
    private String	 directorIdCardName;

    /**
     * 主管组内职务名称 
     */
    @ApiModelProperty("主管组内职务名称")
    private String	 directorVirtualOrganizationPosition;
/**
     * 是否用于一级部门 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否用于一级部门")
    private String	 isUseFirstDept;
/**
     * 是否开启自定义汇报 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启自定义汇报")
    private String	 isOpenCustomReport;
/**
     * 部门排序 
     */
    @ApiModelProperty("部门排序")
    private Long	 dutyBodyOrderNum;

    /**
     * 个人排序 
     */
    @ApiModelProperty("个人排序")
    private Long	 personalOrderNumber;

    /**
     * 权重排序 
     */
    @ApiModelProperty("权重排序")
    private Long	 weightOrderNumber;

    /**
     * 创建时间 
     */
    @ApiModelProperty("创建时间")
    private Date	 createTime;

    /**
     * 操作时间 
     */
    @ApiModelProperty("操作时间")
    private Date	 operateTime;
/**
     * 是否开启预算 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否开启预算")
    private String	 isUseBudget;
/**
     * 指标编号
     */
    @ApiModelProperty("指标编号")
    private String	 objectiveNumber;
@Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      BffNextLevelTargetObjDto that = (BffNextLevelTargetObjDto) o;
      return  objectiveId == that.objectiveId&&parentObjectiveId == that.parentObjectiveId&&objectiveCode == that.objectiveCode&&isLastObjective == that.isLastObjective&&levelNumber == that.levelNumber&&deptId == that.deptId&&deptShortName == that.deptShortName&&userId == that.userId&&idCardName == that.idCardName&&nickName == that.nickName&&objectiveName == that.objectiveName&&objectiveShortName == that.objectiveShortName&&subjectLifeCycle == that.subjectLifeCycle&&targetId == that.targetId&&dutyBodyId == that.dutyBodyId&&dutyBodyName == that.dutyBodyName&&respBodyType == that.respBodyType&&correlationLastTargetCatId == that.correlationLastTargetCatId&&objectiveTemplateId == that.objectiveTemplateId&&targetValueType == that.targetValueType&&objectiveTemplateName == that.objectiveTemplateName&&orderNumber == that.orderNumber&&updateStatus == that.updateStatus&&periodicModeTypeCode == that.periodicModeTypeCode&&evaObjTargetCycleId == that.evaObjTargetCycleId&&cycleStandardName == that.cycleStandardName&&cycleNumberShortName == that.cycleNumberShortName&&weightValue == that.weightValue&&weightScore == that.weightScore&&targetDiagnosticValue == that.targetDiagnosticValue&&unit == that.unit&&digitalUnit == that.digitalUnit&&virtualOrgDeptStatus == that.virtualOrgDeptStatus&&dutyInaugurationId == that.dutyInaugurationId&&dutyInaugurationName == that.dutyInaugurationName&&dutyInaugurationNickName == that.dutyInaugurationNickName&&dutyPostName == that.dutyPostName&&directorInaugurationId == that.directorInaugurationId&&directorName == that.directorName&&directorNickName == that.directorNickName&&directorPostName == that.directorPostName&&createLowerIndicator == that.createLowerIndicator&&dutyVirtualOrgMemberId == that.dutyVirtualOrgMemberId&&directorVirtualOrgMemberId == that.directorVirtualOrgMemberId&&isComplete == that.isComplete&&targetValue == that.targetValue&&cyclelAlias == that.cyclelAlias&&principalVirtualOrgMemberId == that.principalVirtualOrgMemberId&&principalInaugurationId == that.principalInaugurationId&&principalUserFace == that.principalUserFace&&principalInaugurationName == that.principalInaugurationName&&principalInaugurationNickName == that.principalInaugurationNickName&&principalPostName == that.principalPostName&&principalIdCardName == that.principalIdCardName&&principalNickName == that.principalNickName&&principalVirtualOrganizationPosition == that.principalVirtualOrganizationPosition&&directorIdCardName == that.directorIdCardName&&directorVirtualOrganizationPosition == that.directorVirtualOrganizationPosition&&isUseFirstDept == that.isUseFirstDept&&isOpenCustomReport == that.isOpenCustomReport&&dutyBodyOrderNum == that.dutyBodyOrderNum&&personalOrderNumber == that.personalOrderNumber&&weightOrderNumber == that.weightOrderNumber&&createTime == that.createTime&&operateTime == that.operateTime&&isUseBudget == that.isUseBudget&&objectiveNumber == that.objectiveNumber;
    }
@Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), objectiveId,parentObjectiveId,objectiveCode,isLastObjective,levelNumber,deptId,deptShortName,userId,idCardName,nickName,objectiveName,objectiveShortName,subjectLifeCycle,targetId,dutyBodyId,dutyBodyName,respBodyType,correlationLastTargetCatId,objectiveTemplateId,targetValueType,objectiveTemplateName,orderNumber,updateStatus,periodicModeTypeCode,evaObjTargetCycleId,cycleStandardName,cycleNumberShortName,weightValue,weightScore,targetDiagnosticValue,unit,digitalUnit,virtualOrgDeptStatus,dutyInaugurationId,dutyInaugurationName,dutyInaugurationNickName,dutyPostName,directorInaugurationId,directorName,directorNickName,directorPostName,createLowerIndicator,dutyVirtualOrgMemberId,directorVirtualOrgMemberId,isComplete,targetValue,cyclelAlias,principalVirtualOrgMemberId,principalInaugurationId,principalUserFace,principalInaugurationName,principalInaugurationNickName,principalPostName,principalIdCardName,principalNickName,principalVirtualOrganizationPosition,directorIdCardName,directorVirtualOrganizationPosition,isUseFirstDept,isOpenCustomReport,dutyBodyOrderNum,personalOrderNumber,weightOrderNumber,createTime,operateTime,isUseBudget,objectiveNumber);
    }
    
      

    }
   